package com.pine.dcts.exception;

/**
 * 处理状态
 *
 * @author XYJXUST
 * @date 2018-1-12
 **/
public enum HttpStatus {
    /**
     * 成功
     */
    OK(200, "操作成功"),
    /**
     * 权限不足
     */
    NO_AUTH(401, "认证失败"),

    /**
     * 权限不足
     */
    UNAUTHORIZED(403, "权限不足"),
    /**
     * 请求未找到
     */
    REQUEST_NOT_FOUND(404, "请求未找到"),
    /**
     * 请求未找到
     */
    METHOD_NOT_ALLOWED(405, "请求不支持"),
    /**
     * 请求格式错误
     */
    METHOD_NOT_ACCEPTABLE(406, "请求格式错误"),
    /**
     * 请求格式错误
     */
    SYSTEM_ERROR(500, "系统错误"),
    /**
     * 系统内部错误
     */
    INTERNAL_SERVER_ERROR(1000, "系统错误"),
    /**
     * 参数错误
     */
    ILLEGAL_ARGUMENT(1001, "参数错误"),
    /**
     * 参数解析失败
     */
    ARGUMENT_NOT_READABLE(1002, "参数解析失败"),
    /**
     * 非法的数据格式，参数没有经过校验
     */
    ILLEGAL_DATA(1003, "数据错误"),

    MULTIPART_TOO_LARGE(1004, "文件太大"),
    /**
     * 非法状态
     */
    ILLEGAL_STATE(1005, "非法状态"),
    /**
     * 缺少参数
     */
    MISSING_ARGUMENT(1006, "缺少参数"),
    /**
     * 参数错误
     */
    ILLEGAL_ARGUMENT_TYPE(1010, "参数类型错误"),
    /**
     * 重复提交错误
     */
    RESUBMIT_ERROR(1011, "重复提交错误"),



    /**
     * 未知错误
     */
    UNKNOW_ERROR(1100, "未知错误"),
    /**
     * 业务错误
     */
    BUSSINESS_ERROR(2000, "业务错误");




    private final int value;

    private final String message;


    HttpStatus(int value, String message) {
        this.value = value;
        this.message = message;
    }

    public static HttpStatus getByValue(int value) {
       HttpStatus[] values = HttpStatus.values();
        for (HttpStatus e : values) {
            if (e.value == value) {
                return e;
            }
        }
        return null;
    }


    /**
     * Return the integer value of this status code.
     */
    public int value() {
        return this.value;
    }

    /**
     * Return the reason phrase of this status code.
     */
    public String getMessage() {
        return this.message;
    }

}
